def parse_id_list(id_string: str) -> list:
    """
    解析ID字符串为ID列表
    :param id_string: ID字符串，支持单个ID或逗号分隔的多个ID，如 "1" 或 "1,2,3"
    :return: ID列表
    :raises ValueError: 当ID格式无效时抛出异常
    """
    if not id_string:
        raise ValueError("ID字符串不能为空")
    
    # 解析ID列表
    if ',' in id_string:
        # 多个ID的情况，如 "1,2,3"
        id_list = [int(id.strip()) for id in id_string.split(',') if id.strip().isdigit()]
        if not id_list:
            raise ValueError("无效的ID格式")
    else:
        # 单个ID的情况，如 "1"
        if id_string.isdigit():
            id_list = [int(id_string)]
        else:
            raise ValueError("无效的ID格式")
    
    return id_list
def process_array_fields(data: dict, array_fields: list = None) -> dict:
    """
    处理数据中的数组字段，将数组转换为逗号分隔的字符串
    :param data: 原始数据字典
    :param array_fields: 需要处理的数组字段列表，如果为None则使用默认字段
    :return: 处理后的数据字典
    """                           
    print('参数为::', data, array_fields )           
    processed_data = {}
    for key, value in data.items():
        # 如果是数组字段且值为列表，则转换为逗号分隔的字符串
        if key in array_fields and isinstance(value, list):
            processed_data[key] = ','.join(str(item) for item in value)
        else:
            processed_data[key] = value
    
    return processed_data
def reverse_array_fields(data: dict, array_fields: list = None) -> dict:
    """
    反向处理数据中的数组字段，将逗号分隔的字符串转换为数组
    :param data: 数据字典
    :param array_fields: 需要处理的数组字段列表
    :return: 处理后的数据字典
    """
    processed_data = {}
    for key, value in data.items():
        # 如果是数组字段且值为字符串，则转换为数组
        if key in array_fields and isinstance(value, str):
            processed_data[key] = [item.strip() for item in value.split(',') if item.strip()]
        else:
            processed_data[key] = value
    
    return processed_data


def set_model_attributes(model_instance, data_dict, exclude_fields=None):
    """
    设置模型对象的属性
    :param model_instance: 模型实例
    :param data_dict: 数据字典
    :param exclude_fields: 要排除的字段列表
    :return: 设置好属性的模型实例
    """
    from application.utils.res import to_snake_case
    
    if exclude_fields is None:
        exclude_fields = []
    
    for key, value in data_dict.items():
        if key.lower() in [field.lower() for field in exclude_fields]:
            continue
            
        snake_key = to_snake_case(key)
        if hasattr(model_instance, snake_key):
            setattr(model_instance, snake_key, value)
    
    return model_instance